package com.ls.demo.pattern.reflect;

/**
 * @program: simpleframework
 * @description:
 * @author: lishuang
 * @create: 2021-11-22 14:29
 **/

public class ReflectTarget {
    /**
     * (默认的带参数构造函数)
     *
     * @param str
     */
    ReflectTarget(String str) {
        System.out.println("(默认)的构造方法 s = " + str);
    }

    /**
     * 无参构造函数
     */
    public ReflectTarget() {
        System.out.println("调用了公有的无参构造方法 。。。");
    }

    /**
     * 有一个参数的构造函数
     *
     * @param name
     */
    public ReflectTarget(char name) {
        System.out.println("调用了带有一个参数的构造方法，参数值为 " + name);
    }

    /**
     * 有多个参数的构造函数
     *
     * @param name
     * @param index
     */
    public ReflectTarget(String name, int index) {
        System.out.println("调用了带有多个参数的构造方法，参数值为【目标名】： " + name + " 【序号】" + index);
    }

    /**
     * 受保护的构造函数
     *
     * @param n
     */
    protected ReflectTarget(boolean n) {
        System.out.println("受保护的构造方法 n :" + n);
    }

    /**
     * 私有的构造函数
     *
     * @param index
     */
    private ReflectTarget(int index) {
        System.out.println("私有的构造方法 序号：" + index);
    }

    public String name;
    protected int index;
    char type;
    private String targetInfo;

    @Override
    public String toString() {
        return "ReflectTarget{" +
                "name='" + name + '\'' +
                ", index=" + index +
                ", type=" + type +
                ", targetInfo='" + targetInfo + '\'' +
                '}';
    }

    public static void main(String[] args) throws ClassNotFoundException {
        Class<?> reflectTarget = Class.forName("com.ls.demo.pattern.reflect.ReflectTarget");
        System.out.println(reflectTarget.getName());
    }

}
